// 模拟用户消息数据
import type { Message, MessageListResponse } from '@/types/message'

// 生成模拟消息数据
export const generateMockMessages = (params: {
  page: number;
  pageSize: number;
  type?: number;
  status?: number;
}): MessageListResponse => {
  const { page, pageSize, type, status } = params

  // 模拟消息数据
  const allMessages: Message[] = [
    {
      id: 1,
      title: '系统维护通知',
      content: '尊敬的用户，系统将于2023年12月15日凌晨2:00-4:00进行例行维护，届时系统将暂停服务。给您带来的不便，敬请谅解。',
      type: 1, // 系统消息
      status: 0, // 未读
      createTime: '2023-12-10T10:00:00'
    },
    {
      id: 2,
      title: '预约成功通知',
      content: '您已成功预约张医生的2023年12月18日上午9:00的门诊，请按时前往医院就诊。',
      type: 2, // 预约消息
      status: 0, // 未读
      createTime: '2023-12-11T14:30:00'
    },
    {
      id: 3,
      title: '问诊回复',
      content: '李医生回复了您的问诊：根据您描述的症状，可能是颈椎病或者低血压导致的，建议您来医院做进一步检查。',
      type: 3, // 问诊消息
      status: 1, // 已读
      createTime: '2023-12-12T09:15:00'
    },
    {
      id: 4,
      title: '体检结果异常提醒',
      content: '您最近的体检报告显示血压偏高，请注意饮食和作息，建议近期复查。',
      type: 4, // 紧急消息
      status: 0, // 未读
      createTime: '2023-12-13T16:45:00'
    },
    {
      id: 5,
      title: '系统功能更新',
      content: '尊敬的用户，系统已更新了在线问诊功能，现在您可以通过视频方式与医生进行远程问诊。详情请查看帮助文档。',
      type: 1, // 系统消息
      status: 1, // 已读
      createTime: '2023-12-14T11:20:00'
    },
    {
      id: 6,
      title: '预约取消成功',
      content: '您已成功取消原定于2023年12月20日下午3:00的预约，感谢您的配合。',
      type: 2, // 预约消息
      status: 1, // 已读
      createTime: '2023-12-15T13:10:00'
    },
    {
      id: 7,
      title: '随访提醒',
      content: '您的术后随访时间已到，请尽快联系您的主治医生进行随访。',
      type: 3, // 问诊消息
      status: 0, // 未读
      createTime: '2023-12-16T10:30:00'
    },
    {
      id: 8,
      title: '医疗记录更新',
      content: '您的医疗记录已更新，新增了最新的检查报告，请在个人中心查看。',
      type: 3, // 问诊消息
      status: 1, // 已读
      createTime: '2023-12-17T15:40:00'
    },
    {
      id: 9,
      title: '疫情防控提醒',
      content: '近期新冠疫情有所反弹，请做好个人防护，勤洗手，戴口罩，避免前往人员密集场所。',
      type: 1, // 系统消息
      status: 0, // 未读
      createTime: '2023-12-18T09:00:00'
    },
    {
      id: 10,
      title: '处方已开具',
      content: '您的电子处方已开具，可前往医院药房或线上药店购买药品。',
      type: 2, // 预约消息
      status: 1, // 已读
      createTime: '2023-12-19T14:20:00'
    },
    {
      id: 11,
      title: '用药提醒',
      content: '请按时服用医生开具的药物，保持良好的作息习惯，有任何不适请及时联系医生。',
      type: 4, // 紧急消息
      status: 0, // 未读
      createTime: '2023-12-20T18:30:00'
    },
    {
      id: 12,
      title: '健康讲座通知',
      content: '医院将于2024年1月5日-7日举办健康生活方式讲座，欢迎您参加学习。',
      type: 1, // 系统消息
      status: 1, // 已读
      createTime: '2023-12-21T11:15:00'
    }
  ]

  // 根据类型和状态筛选消息
  let filteredMessages = [...allMessages]

  if (type !== undefined && type !== 0) {
    filteredMessages = filteredMessages.filter(msg => msg.type === type)
  }

  if (status !== undefined && status !== -1) {
    filteredMessages = filteredMessages.filter(msg => msg.status === status)
  }

  // 按创建时间降序排序
  filteredMessages.sort((a, b) => new Date(b.createTime).getTime() - new Date(a.createTime).getTime())

  // 计算分页
  const start = (page - 1) * pageSize
  const end = start + pageSize
  const paginatedMessages = filteredMessages.slice(start, end)

  // 计算未读消息数
  const unreadCount = allMessages.filter(msg => msg.status === 0).length

  return {
    list: paginatedMessages,
    total: filteredMessages.length,
    unreadCount
  }
}

// 模拟获取消息详情
export const getMockMessageDetail = (msgId: number): Message | null => {
  const message = allMessages.find(msg => msg.id === msgId)
  return message || null
}

// 所有模拟消息
const allMessages: Message[] = [
  {
    id: 1,
    title: '系统维护通知',
    content: '尊敬的用户，系统将于2023年12月15日凌晨2:00-4:00进行例行维护，届时系统将暂停服务。给您带来的不便，敬请谅解。',
    type: 1, // 系统消息
    status: 0, // 未读
    createTime: '2023-12-10T10:00:00'
  },
  {
    id: 2,
    title: '预约成功通知',
    content: '您已成功预约张医生的2023年12月18日上午9:00的门诊，请按时前往医院就诊。',
    type: 2, // 预约消息
    status: 0, // 未读
    createTime: '2023-12-11T14:30:00'
  },
  {
    id: 3,
    title: '问诊回复',
    content: '李医生回复了您的问诊：根据您描述的症状，可能是颈椎病或者低血压导致的，建议您来医院做进一步检查。',
    type: 3, // 问诊消息
    status: 1, // 已读
    createTime: '2023-12-12T09:15:00'
  },
  {
    id: 4,
    title: '体检结果异常提醒',
    content: '您最近的体检报告显示血压偏高，请注意饮食和作息，建议近期复查。',
    type: 4, // 紧急消息
    status: 0, // 未读
    createTime: '2023-12-13T16:45:00'
  },
  {
    id: 5,
    title: '系统功能更新',
    content: '尊敬的用户，系统已更新了在线问诊功能，现在您可以通过视频方式与医生进行远程问诊。详情请查看帮助文档。',
    type: 1, // 系统消息
    status: 1, // 已读
    createTime: '2023-12-14T11:20:00'
  },
  {
    id: 6,
    title: '预约取消通知',
    content: '患者赵六取消了原定于2023年12月20日下午3:00的预约，请知悉。',
    type: 2, // 预约消息
    status: 1, // 已读
    createTime: '2023-12-15T13:10:00'
  },
  {
    id: 7,
    title: '患者随访提醒',
    content: '患者钱七的术后随访时间已到，请安排随访事宜。',
    type: 3, // 问诊消息
    status: 0, // 未读
    createTime: '2023-12-16T10:30:00'
  },
  {
    id: 8,
    title: '医疗记录更新',
    content: '患者孙八的医疗记录已更新，新增了最新的检查报告，请查看。',
    type: 3, // 问诊消息
    status: 1, // 已读
    createTime: '2023-12-17T15:40:00'
  },
  {
    id: 9,
    title: '紧急会议通知',
    content: '医院将于2023年12月22日上午10:00召开紧急会议，讨论新冠防控措施，请务必准时参加。',
    type: 1, // 系统消息
    status: 0, // 未读
    createTime: '2023-12-18T09:00:00'
  },
  {
    id: 10,
    title: '处方审核提醒',
    content: '您有一个新的处方需要审核，请及时处理。',
    type: 2, // 预约消息
    status: 1, // 已读
    createTime: '2023-12-19T14:20:00'
  },
  {
    id: 11,
    title: '紧急求助',
    content: '急诊科请求协助处理一例复杂病例，患者周十（女，28岁）出现多器官功能衰竭症状，请立即前往会诊。',
    type: 4, // 紧急消息
    status: 0, // 未读
    createTime: '2023-12-20T18:30:00'
  },
  {
    id: 12,
    title: '培训通知',
    content: '医院将于2024年1月5日-7日举办新医疗设备使用培训，请安排时间参加。',
    type: 1, // 系统消息
    status: 1, // 已读
    createTime: '2023-12-21T11:15:00'
  }
]
